Warning: mkdir(): No space left on device in /var/www/tg-me/post.php on line 37

Warning: file_put_contents(aCache/aDaily/post/defront/--): Failed to open stream: No such file or directory in /var/www/tg-me/post.php on line 50
Defront — про фронтенд-разработку и не только | Telegram Webview: defront/1113 -
Telegram Group & Telegram Channel
Неожиданное пересечение типов в TypeScript

Стэфан Баумгартнер рассказал, в каких случаях могут возникать неожиданные пересечения типов, и что с ними делать — "TypeScript: Unexpected intersections".

Неожиданное пересечение типов возникает при обновлении свойств объектов, если в качестве ключа используется переменная с объединением типов. В этом случае для ключа TypeScript будет использовать "наибольший общий делитель" в виде пересечения типов. В примере ниже таким "делителем" будет пересечение string & number, то есть тип never, из-за чего возникнет ошибка типизации:

interface Person {
age: number;
name: string;
}

function updatePersonByKey(
person: Person,
key: keyof Person,
value: Person[keyof Person]
) {
// тут будет ошибка типизации, так как
// key превратится в пересечение типов `string & number`
person[key] = value;
}

Также неожиданное пересечение типов может возникнуть после деструктуризации объекта, так как деструктурированные свойства теряют связь с оригинальным типом.

Полезная статья. Рекомендую почитать всем, кто использует TypeScript.

#typescript

https://fettblog.eu/typescript-unexpected-intersections/



tg-me.com/defront/1113
Create:
Last Update:

Неожиданное пересечение типов в TypeScript

Стэфан Баумгартнер рассказал, в каких случаях могут возникать неожиданные пересечения типов, и что с ними делать — "TypeScript: Unexpected intersections".

Неожиданное пересечение типов возникает при обновлении свойств объектов, если в качестве ключа используется переменная с объединением типов. В этом случае для ключа TypeScript будет использовать "наибольший общий делитель" в виде пересечения типов. В примере ниже таким "делителем" будет пересечение string & number, то есть тип never, из-за чего возникнет ошибка типизации:


interface Person {
age: number;
name: string;
}

function updatePersonByKey(
person: Person,
key: keyof Person,
value: Person[keyof Person]
) {
// тут будет ошибка типизации, так как
// key превратится в пересечение типов `string & number`
person[key] = value;
}

Также неожиданное пересечение типов может возникнуть после деструктуризации объекта, так как деструктурированные свойства теряют связь с оригинальным типом.

Полезная статья. Рекомендую почитать всем, кто использует TypeScript.

#typescript

https://fettblog.eu/typescript-unexpected-intersections/

BY Defront — про фронтенд-разработку и не только




Share with your friend now:
tg-me.com/defront/1113

View MORE
Open in Telegram


Defront при поддержке Зарплата ру — про фронтенд разработку и не только Telegram | DID YOU KNOW?

Date: |

How Does Telegram Make Money?

Telegram is a free app and runs on donations. According to a blog on the telegram: We believe in fast and secure messaging that is also 100% free. Pavel Durov, who shares our vision, supplied Telegram with a generous donation, so we have quite enough money for the time being. If Telegram runs out, we will introduce non-essential paid options to support the infrastructure and finance developer salaries. But making profits will never be an end-goal for Telegram.

Traders also expressed uncertainty about the situation with China Evergrande, as the indebted property company has not provided clarification about a key interest payment.In economic news, the Commerce Department reported an unexpected increase in U.S. new home sales in August.Crude oil prices climbed Friday and front-month WTI oil futures contracts saw gains for a fifth straight week amid tighter supplies. West Texas Intermediate Crude oil futures for November rose $0.68 or 0.9 percent at 73.98 a barrel. WTI Crude futures gained 2.8 percent for the week.

Defront при поддержке Зарплата ру — про фронтенд разработку и не только from pl


Telegram Defront — про фронтенд-разработку и не только
FROM USA